package com.ht.api.call.func.impl.wwx;

import javax.sql.DataSource;

import com.ht.api.bean.AjaxResult;
import com.ht.api.bean.LoginBean;
import com.ht.api.call.func.IFunctionCall;
import com.ht.api.constant.CustomerLinkStatus;
import com.ht.api.db.Db;
import com.ht.api.db.Entity;
import com.ht.api.db.util.HtUtil;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;

/**
 * 新增联系我
 * @author asq
 * @createTime 2025年1月13日 22:19:08
 */
@Slf4j
public class WwxContactWayAddFunctionCall implements IFunctionCall {
	@Override
	public String getName() {
		return "新增联系我";
	}

	@Override
	public JSONObject execute(LoginBean me, JSONObject param, AjaxResult result) {
		// 验证参数
		JSONObject normalParam = HtUtil.revertJson(param);
		HtUtil.checkParam(normalParam, "appid", "type", "scene");
		
		// 本地数据库新增
		add(me.getDataSource(), normalParam);
		
		return JSONUtil.createObj();
	}

	/**
	 * 新增联系我
	 * @param ds 数据源
	 * @param param 参数
	 */
	private void add(DataSource ds, JSONObject param) {
		Entity wxContactWay = Db.createEntity("wx_contact_way");
		wxContactWay.set("appid", param.getStr("appid"));
		wxContactWay.set("type", param.getStr("type"));
		wxContactWay.set("scene", param.getStr("scene"));
		wxContactWay.set("remark", param.getStr("remark"));
		if (param.containsKey("skip_verify")) {
			wxContactWay.set("skip_verify", param.getBool("skip_verify") ? 1 : 0);
		} else {
			wxContactWay.set("skip_verify", 1);
		}
		wxContactWay.set("state", "contact_" + HtUtil.getId());
		wxContactWay.set("style", param.getStr("style"));
		if (param.containsKey("is_exclusive")) {
			wxContactWay.set("is_exclusive", param.getBool("is_exclusive") ? 1 : 0);
		} else {
			wxContactWay.set("is_exclusive", 0);
		}
		wxContactWay.set("friend_cnt", 0);
		wxContactWay.set("status", CustomerLinkStatus.DISABLED);
		wxContactWay.set("name", param.getStr("name"));
		
		// 批量写入数据库
		Db.insert(ds, wxContactWay);
	}
}
